# 面向对象的三大特征：封装，继承，多态
# 封装：封装是指将对象的属性和方法捆绑在一起，并对外部隐藏对象的内部实现细节，外界只能通过接口使用该对象。
# 它需要：
# 把内容封装到某个地方
# 从另外一个地方去调用被封装的内容
# 对于封装来说其实就是通过定义类来实现封装，类中包含属性和方法，属性用于存储对象的状态，方法用于操作对象的数据，然后通过对象直接或者self间接来获取被封装的内容。
# 继承：当一个类继承另一个类时，将自动获得后者的所有属性和方法。原有的类称为父类或基类，而新类称为子类或派生类。子类不仅可以继承父类的所有属性和方法，还可以定义自己的属性和方法。
# 其实就是将多个类共有的属性和方法提取到父类中，实现代码的重用，减少重复编写，提高效率
# 格式：
# class 类名(父类名)：#在定义子类时，括号内指定父类的名称
#     '''子类就可以继承父类中公共的属性和方法'''
#     pass
class Animal:
    def eat(self):
        '''
        吃
        :return:
        '''
        print('吃饭了')
        pass
    def drink(self):
        '''
        喝
        :return:
        '''
        pass
    pass
class Dog(Animal): #继承了Animal父类，Dog就是子类
    def wwj(self):
        print('小狗汪汪叫')
    pass
class Cat(Animal):
    def mmj(self):
        print('小猫喵喵叫')
    pass
d1=Dog()
d1.eat()#继承父类后，子类具备了吃的行为
d1.wwj()#子类独有的行为
print('**********cat的行为************')
c1=Cat()
c1.eat()
c1.mmj()
